1. Technical Field
The present invention relates generally to communication protocols between a host computer and an input/output (I/O) Adapter. More specifically, the present invention provides an implementation for virtualizing resources on a physical I/O. In particular, the present invention provides a mechanism by which the combination of a host address translation and protection table and a Peripheral Component Interconnect (PCI) adapter, such as a PCI, PCI-X, or PCI-E adapter, address translation and protection table can be used to associate a system image to a set of system memory addresses, such that a system image within a multiple system image virtual server can directly expose a portion or all of its associated system memory to a PCI adapter that is shared by multiple system images.
2. Description of Related Art
Virtualization is the creation of substitutes for real resources. The substitutes have the same functions and external interfaces as their real counterparts, but differ in attributes such as size, performance, and cost. These substitutes are virtual resources and their users are usually unaware of the substitute's existence. Servers have used two basic approaches to virtualize system resources: Partitioning and Hypervisors. Partitioning creates virtual servers as fractions of a physical server's resources, typically in coarse (e.g., physical) allocation units (e.g., a whole processor, along with its associated memory and I/O adapters). Hypervisors are software or firmware components that can virtualize all server resources with fine granularity (e.g., in small fractions of a single physical resource).
Servers that support virtualization presently have two options for handling I/O. The first option is to not allow a single physical I/O adapter to be shared between virtual servers. The second option is to add function into the Hypervisor, or another intermediary, that provides the isolation necessary to permit multiple operating systems to share a single physical adapter.
The first option has several problems. One significant problem is that expensive adapters cannot be shared between virtual servers. If a virtual server only needs to use a fraction of an expensive adapter, an entire adapter would be dedicated to the server. As the number of virtual servers on the physical server increases, this leads to underutilization of the adapters and more importantly a more expensive solution, because each virtual server needs a physical adapter dedicated to it. For physical servers that support many virtual servers, another significant problem with this option is that it requires many adapter slots, with all the accompanying hardware (e.g., chips, connectors, cables, etc.) required to attach those adapters to the physical server.
Though the second option provides a mechanism for sharing adapters between virtual servers, that mechanism must be invoked and executed on every I/O transaction. The invocation and execution of the sharing mechanism by the Hypervisor or other intermediary on every I/O transaction degrades performance. It also leads to a more expensive solution, because the customer must purchase more hardware, either to make up for the cycles used to perform the sharing mechanism or, if the sharing mechanism is offloaded to an intermediary, for the intermediary hardware.
Therefore, it would be advantageous to have an improved method, apparatus, and computer instructions that allows a system image within a multiple system image virtual server to directly expose a portion or all of its associated system memory to a shared PCI adapter without having to go through a trusted component, such as a Hypervisor. It would also be advantageous to have the mechanism apply for Ethernet Network Interface Controllers (NICs), Fibre Channel (FC) Host Bus Adapters (HBAs), parallel SCSI (pSCSI) HBAs, InfiniBand, TCP/IP Offload Engines, Remote Direct Memory Access (RDMA) enabled NICs, iSCSI adapters, iSCSI Extensions for RDMA (iSER) adapters, and any other type of adapter that supports a memory mapped I/O interface.